//: C21:Counted.h
// From Thinking in C++, 2nd Edition
// Available at http://www.BruceEckel.com
// (c) Bruce Eckel 1999
// Copyright notice in Copyright.txt
// An object that keeps track of itself
#ifndef COUNTED_H
#define COUNTED_H
#include <vector>
#include <iostream>

class Counted
{
    static int count;
    char* ident;
public:
    Counted(char* id) : ident(id) {
        count++;
    }
    ~Counted() {
        std::cout << ident << " count = "
                  << --count << std::endl;
    }
};

int Counted::count = 0;

class CountedVector :
        public std::vector<Counted*>
{
public:
    CountedVector(char* id) {
        for (int i = 0; i < 5; i++)
            push_back(new Counted(id));
    }
};
#endif // COUNTED_H ///:~
